iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0

前言

最近不同的推理框架不斷地冒出,其實主流也就是那幾個XD,在選擇使用哪一個之前,應該要先定義清楚使用情境,像是給個人電腦做運算 🖥️,還是做成API server 🌐,又或是在不同設備上做邊緣運算 📱

想要以速度為主 ⚡,還是以功能為主 🔧?

  • 並不是每一個都支持custom models或token streaming 🔄
  • 也不是每一個都可以使用CPU 💻
  • 而極少數支持adapters 🔌

推薦 這一篇文章 的比較表格非常簡單好懂 📊。

https://ithelp.ithome.com.tw/upload/images/20240922/20168115xcCYnVjy3p.jpg
(圖源: linkedin,搜尋LLM速度的時候發現的梗圖XD)


🌟 先都介紹一次吧

順序一樣是想到什麼寫什麼,裡面有寫到使用多種加速技術的框架都可以在他們的Github上面看到它用了什麼技術。

  1. vLLM
    • 使用多種加速技術,主打的就是超快的推理速度,也可作為OpenAI-compatible APIs。
    • 因此非常適合需要高併發和大量推理需求下的情境。
    • 支援的模型只有Decoder-only Language Models
  2. Text Generation Inference - TGI
    • 可以輕鬆使用所有HuggingFace的模型推理,支援RESTful API。
    • 同樣也使用了許多推理加速技術,尤其是Flash Attention。
  3. DeepSpeed-MII
    • 適合需要分散式訓練和超大規模推理的情境,多GPU的效果較佳,支援RESTful API。
    • 不過DeepSpeed-MII並沒有支持token streaming和所有的模型類型。
  4. TensorRT-LLM
    • 專門為了NVIDIA TensorRT的GPU優化的框架,也使用許多推理加速技術。
  5. MLC-LLM
    • MLC-LLM比較特別,是適合用在邊緣運算的框架,支援RESTful API。
    • 可以在Android或iPhone(客戶端)部署模型。
  6. LMdeploy
    • 同樣用了許多推理加速技術,據說速度上比vLLM還快
    • 支援RESTful API,也可作為OpenAI-compatible APIs,是有中文docs的框架。
    • 比較特別的是它有部署VLM(視覺語言模型)的pipeline。
  7. FastChat
    • 主要用在訓練、推理,評估LLM的專案,其中也可以作為OpenAI-compatible APIs。
    • FastChat最有名的是為Chatbot Arena平台提供支持。
  8. AirLLM
    • 同樣也是適合邊緣計算和小型設備的新型推理框架,目前並沒有提供API功能。
  9. Ollama
    • 適合個人電腦做推理運算的框架,不管是CPU和GPU都可以使用。
    • 支援RESTful API,不過在大量request下速度會明顯變慢。
  10. OpenLLM
    • 從github看它的demo,除了可以輕鬆跑LLM,也可以作為OpenAI-compatible APIs,還內建了聊天UI。
    • OpenLLM是可以connect adapters的推理框架。
    • 不過他沒有做batching和支援分散式推理,也沒有token streaming,整體而言速度上比較慢。

🔍 簡單小統整:
🌐 適合API Server:vLLM、TGI、DeepSpeed-MII、TensorRT-LLM、LMdeploy、FastChat。
💻 適合個人電腦:Ollama、MLC-LLM、AirLLM。
另外專門為CPU推理的框架還有一個CTranslate2 ⚙️


⚡ 他們的速度比較

目前很多文章都有在比較他們他們之間的速度,不過礙於他們都還是在持續開發中,現在的比較過一陣子可能就沒有意義了,每個github都寫自己最快,但vLLM github放的比較結果卻不是自己最快的XD,因此先以這個為主。

https://ithelp.ithome.com.tw/upload/images/20240922/201681152sbFp0r0FJ.png
(圖源: buildkite,vLLM / TensorRT-LLM / LMdeploy / TGI之間的比較,比較的時間是2024/7)

這個比較的硬體設備是One AWS node with 8x NVIDIA A100 GPUs.

另外,這個比較測試有一個表格,可以看到更詳細的數字。

整體來看,所有測試的Successful req.都是500,代表這些框架在這些特定的工作負載下都能穩定運行,沒有出現崩潰的情況

  • 📊✨ 吞吐量 (higher the better)
    • LMdeploy的確是在llama-3-8B模型下的吞吐量 (3.79197 req/s)表現最好,其次是vLLM (3.74554 req/s)和TGI (3.74425 req/s)。
    • 突然發現圖片和表格好像有點不一樣OAO,筆者這邊主要是看表格中的數字。
  • 🕒⏳ TTFT (time to the first token, lower the better)
    • vLLMTensorRT-LLM整體的表現差異不大,而LMdeployTGI較不穩定。
  • 🔄⏱️ ITL (inter-token latency, lower the better)
    • TGI顯示出較小的延遲,特別是在llama-3-70B和mixtral-8x7B中。

整體來說vLLM和TensorRT-LLM比較穩定,而LMdeploy和TGI在特定情境較不穩定。


章節總結

除了目前最經典的vLLM和TGI 🌟,LMdeploy也是一個值得被注意到的框架 🔍。在選擇推理框架時,了解每個框架的特點和應用場景是非常重要的,隨著技術的不斷演化 🦠,未來仍有可能會出現更多創新性的解決方案。 🧬🧬🧬

這章寫起來比想像中的還要難很多,原本是希望可以把所有框架用到的加速技術都列出來,結果越挖越多,而且很多框架並不是以加速技術為主的,即使可以作為API server,也並沒有特別寫到他們使用的技術是什麼QQ

雖然現在vLLM並不算是目前最快速的框架,但筆者還是很喜歡它,因為整體而言相較穩定、該有的功能都有,而且用起來很簡單XDD,明天就接著來實作時間囉! 🛠️✨


參考資料

Best LLM Inference Engine? TensorRT vs vLLM vs LMDeploy vs MLC-LLM (2024/7)
https://medium.com/@zaiinn440/best-llm-inference-engine-tensorrt-vs-vllm-vs-lmdeploy-vs-mlc-llm-e8ff033d7615
0.llm推理框架简单总结 (2024/5)
https://github.com/wdndev/llm_interview_note/blob/main/06.%E6%8E%A8%E7%90%86/0.llm%E6%8E%A8%E7%90%86%E6%A1%86%E6%9E%B6%E7%AE%80%E5%8D%95%E6%80%BB%E7%BB%93/0.llm%E6%8E%A8%E7%90%86%E6%A1%86%E6%9E%B6%E7%AE%80%E5%8D%95%E6%80%BB%E7%BB%93.md
Comparing LLM serving frameworks — LLMOps (2023/12)
https://medium.com/@plthiyagu/comparing-llm-serving-frameworks-llmops-f02505864754


上一篇
Day20 - 實作之前先來聊一下系統
下一篇
Day22 - vLLM實作篇PART1:安裝到推理 (Linux version)
系列文
Local LLM infra & Inference 一部曲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言